package com.ndp.fb.walle.business;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ndp.fb.exception.CheckedException;
import com.ndp.fb.mongo.model.autocreatead.AdMarketTarget;
import com.ndp.fb.rdb.model.User;

import java.util.Map;

/**
 * Created by Elvis on 2016/6/6.
 */
public interface AdMarketTargetService {

    /**
     * 获取adMarketTarget
     * @param id 广告营销目标
     * @return AdMarketTarget
     */
    public AdMarketTarget getAdMarketTarget(String id);

    /**
     * 保存广告营销目标
     *
     * @param adMarketTarget
     * @return
     * @throws CheckedException 
     */
    public String save(AdMarketTarget adMarketTarget) throws CheckedException;

    /**
     * 更新方便营销目标
     *
     * @param adMarketTarget
     */
    public void update(AdMarketTarget adMarketTarget);

    /**
     * 返回当前登录用户的所有营销目标及其统计数据
     *
     * @param param  查询参数
     * @param ticket 当前登陆用户的ticket
     * @return 返回结果
     */
    JSONObject getAdMarketListWithStatsData(JSONObject param, String ticket);

    /**
     * 返回营销目标下的所有广告
     *
     * @param param 查询参数
     * @return 返回结果
     */
    JSONObject getAllAds(JSONObject param);

    JSONObject findAdMarket(String id, User user);

    /**
     * 优化广告，包括调整预算，暂停广告等
     *
     * @param param 修改参数
     * @return 生成的JobId
     */
    String optimizeAd(JSONObject param);

    /**
     * 获取Job状态
     * @param param 查询参数
     * @return  返回结果
     */
    Map<String,Object> getJobStatus(JSONObject param);

    void updateAdMarket(String id,Integer status, String attribution);

    JSONArray getLogs(String id);
}
